/* eslint valid-jsdoc: "off" */

'use strict';

/**
 * @param {Egg.EggAppInfo} appInfo app info
 */

const virtualPath = process.env.virtualPath || '';
const fs = require('fs');
const path = require('path');
const ms = require('ms');

module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = {};

  // use for cookie sign key, should change to your own and keep security
  config.keys = 'cceFramework_1555470246086_4530';

  // add your middleware config here
  config.middleware = ['errorHandler', 'toHttps', 'koaStatic'];

  // add your user config here
  const userConfig = {

    // 静态资源路径前缀
    koaStatic: {
      root: 'app/public',
      index: 'index.html',
      prefix: virtualPath,
      maxage: 1000 * 60 * 60 * 24 * 7, // 缓存时间
    },

    security: {
      // 伪造请求
      csrf: {
        enable: true,
      },
    },

    view: {
      defaultViewEngine: 'ejs',
      mapping: {
        '.ejs': 'ejs'
      },
    },

    // log按照小时进行切割
    logrotator: {
      filesRotateByHour: [
        path.join(appInfo.root, 'logs', appInfo.name, 'common-error.log'),
        path.join(appInfo.root, 'logs', appInfo.name, appInfo.name + '-web.log')
      ],
      maxDays: 0,
    },

    //微信公众号配置
    monkeyWx: {
      //微信公众号appId
      appId: 'config your appid',
      cardId: 'config your cardid',
      //签名接口请求类型
      method: 'post'
    },
    app_monkeyWx: {
      jsapi_ticket: null,
      api_ticket: null
    },

    // 验证码配置项
    monkeySMS: {
      enable:true,
      codeLength: 4, //验证码位数
      validTime: 2, //验证码有效期 => 单位：分钟
      intervalTime: 1, //验证码发送间隔 => 单位：分钟
    },

    //返回结果code对应内容 --可根据实际需求，增删改自定义
    codeMessage: {
      '0': '请求成功',
      '1000': '用户未登录',
      '1001': '用户名或密码错误',
      '1002': '用户名不能为空',
      '1003': '密码不能为空',
      '1004': '参数不能为空',
      '1005': '参数格式不正确',
      '1101': '手机号码不能为空',
      '1102': '手机号码格式不正确',
      '1103': '您已经提交过手机号码',
      '1200': '图形验证码不能为空',
      '1201': '图形验证码无效',
      '1202': '图形验证码已经失效，需刷新',
      '1500': '信息已提交',
      '1501': '验证码发送成功',
      '1502': '验证码发送失败',
      '1503': '发送频率过快，请稍后再试',
      '5000': '内部发生错误,请稍候重试!'
    }

    // // ---------设置favicon.png---------
    // siteFile: {
    //   '/favicon.ico': fs.readFileSync(path.join(appInfo.baseDir, 'app/public/favicon.png')),
    // },

    // // ---------前置代理模式,开启反向代理后可使用此配置---------
    // proxy: true,
    // ipHeaders: 'X-Real-Ip, X-Forwarded-For',
    // maxProxyCount: 1,
    // protocolHeaders: 'X-Real-Proto, X-Forwarded-Proto',

  };

  return {
    ...config,
    ...userConfig,
  };
};